; unsigned modulo(unsigned long long int divisor, unsigned dividendo);

global modulo

%define l_dividendo [ebp + 8]
%define h_dividendo [ebp + 12]
%define divisor [ebp + 16]

section .text

modulo:
	push ebp
	mov ebp, esp
	push esi
	push edi
	push ebp
	
	xor edx, edx ; Limpio EDX.
	mov eax, h_dividendo ; Muevo a EAX la parte alta de el dividendo.
	mov esi, divisor ; Muevo a ESI el divisor.
	div esi ; Divido. El cociente me queda en EAX y el resto en EDX.
	
	mov eax, l_dividendo ; Muevo a EAX la parte baja de el dividendo.
	div esi ; Divido. El cociente me queda en EAX y resto en EDX.
	
	mov eax, edx ; Muevo el resto que esta en EDX a EAX.
	xor edx, edx ; Limpio EDX
	
fin:
	pop ebp
	pop edi
	pop esi
	pop ebp
	ret
